import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import Mock from 'mockjs';
import { Todos } from './data/todoList';// 导入Todos数据

export default{
    start(){ // 初始化函数
        let mock = new MockAdapter(axios); // 创建 MockAdapter 实例
         // 获取todo列表
        mock.onGet('/todo/list').reply(
            config =>{//  config 指 前台传过来的值
                let mockTodo = Todos.map(// 重组 Todos数组，变成我们想要的数据
                    todo => {
                        return{
                            id:todo.id,
                            title:todo.title,
                            count:todo.record.filter(
                                (data) => {
                                    if(data.checked===false){return true;} else
                                    {return false;}

                                }
                            ).length,// 过滤到record里面 ‘checked’ 为true的数据，因为它们已经被完成了
                            locked:todo.locked,
                            isDelete:todo.isDelete
                        };
                    }
                ).filter(
                    todo => {
                        if (todo.isDelete===true) {// 过滤掉 ‘isDelete’为true，因为已经被删除了。
                            return false;
                        }else{
                            return true;
                        }
                    }
                );
                return new Promise(
                    (resolve,reject) =>{
                        setTimeout(() => {
                            resolve([200,{todos:mockTodo}])// 返回状态为200，并且返回todos数据
                        },200)
                    }
                );
            }
        );

        // 新增一条todo
        mock.onPost('todo/addTodo').reply(
            config => {
                Todos.push({
                    id:Mock.Random.guid,
                    title:'newList',
                    isDelete:false,
                    locked:false,
                    record:[]
                });
                return new Promise(
                    (resolve,reject) => {
                        setTimeout(()=>{
                            resolve([200]);
                        },200)
                    }
                )
            }
        );
    }

}
/**
 * 这是在 JavaScript 中用来进行数值和对象对比时常用的操作符，从定义上来看：

== ：抽象相等，比较时会先进性类型转换，然后再比较值

=== ：严格相等，会比较两个值的类型和值
 */